USE [GD1C2012]
GO

/*NOTA: EJECUTAR SCRIPT EN ESTE ORDEN*/

--Creacion de tabla trimestre para listados
CREATE TABLE [tequilaso].[TRIMESTRE](
	[id_trimestre] [int] IDENTITY(1,1) NOT NULL,
	[descripcion] [varchar](250) COLLATE Traditional_Spanish_CI_AS NULL,
	[desde] [datetime] NOT NULL,
	[hasta] [datetime] NOT NULL
) ON [PRIMARY]
GO

--Inserts en tabla trimestre
INSERT INTO [GD1C2012].[tequilaso].[TRIMESTRE]
           ([descripcion]
           ,[desde]
           ,[hasta])
     VALUES
           ('1er trimestre 2010'
           ,'01/01/2010'
           ,'31/3/2010');

INSERT INTO [GD1C2012].[tequilaso].[TRIMESTRE]
           ([descripcion]
           ,[desde]
           ,[hasta])
     VALUES
           ('2do trimestre 2010'
           ,'01/04/2010'
           ,'30/06/2010');

INSERT INTO [GD1C2012].[tequilaso].[TRIMESTRE]
           ([descripcion]
           ,[desde]
           ,[hasta])
     VALUES
           ('3er trimestre 2010'
           ,'01/07/2010'
           ,'30/09/2010');

INSERT INTO [GD1C2012].[tequilaso].[TRIMESTRE]
           ([descripcion]
           ,[desde]
           ,[hasta])
     VALUES
           ('4to trimestre 2010'
           ,'01/10/2010'
           ,'31/12/2010');
/*--------------------------------------------------------------------*/
INSERT INTO [GD1C2012].[tequilaso].[TRIMESTRE]
           ([descripcion]
           ,[desde]
           ,[hasta])
     VALUES
           ('1er trimestre 2011'
           ,'01/01/2011'
           ,'31/3/2011');

INSERT INTO [GD1C2012].[tequilaso].[TRIMESTRE]
           ([descripcion]
           ,[desde]
           ,[hasta])
     VALUES
           ('2do trimestre 2011'
           ,'01/04/2011'
           ,'30/06/2011');

INSERT INTO [GD1C2012].[tequilaso].[TRIMESTRE]
           ([descripcion]
           ,[desde]
           ,[hasta])
     VALUES
           ('3er trimestre 2011'
           ,'01/07/2011'
           ,'30/09/2011');

INSERT INTO [GD1C2012].[tequilaso].[TRIMESTRE]
           ([descripcion]
           ,[desde]
           ,[hasta])
     VALUES
           ('4to trimestre 2011'
           ,'01/10/2011'
           ,'31/12/2011');
/*-------------------------------------------------------------------------------*/
INSERT INTO [GD1C2012].[tequilaso].[TRIMESTRE]
           ([descripcion]
           ,[desde]
           ,[hasta])
     VALUES
           ('1er trimestre 2012'
           ,'01/01/2012'
           ,'31/3/2012');

INSERT INTO [GD1C2012].[tequilaso].[TRIMESTRE]
           ([descripcion]
           ,[desde]
           ,[hasta])
     VALUES
           ('2do trimestre 2012'
           ,'01/04/2012'
           ,'30/06/2012');

INSERT INTO [GD1C2012].[tequilaso].[TRIMESTRE]
           ([descripcion]
           ,[desde]
           ,[hasta])
     VALUES
           ('3er trimestre 2012'
           ,'01/07/2012'
           ,'30/09/2012');

INSERT INTO [GD1C2012].[tequilaso].[TRIMESTRE]
           ([descripcion]
           ,[desde]
           ,[hasta])
     VALUES
           ('4to trimestre 2012'
           ,'01/10/2012'
           ,'31/12/2012');
GO

-- SP MEJORES AUTOS
CREATE PROCEDURE TEQUILASO.sp_mejoresAutos
	@id_trimestre int
AS
	DECLARE @desde DATETIME,
	     	@hasta DATETIME,
			@temp VARCHAR(250),
			@nombreVista VARCHAR(250)
BEGIN	
	
	SELECT @desde = desde FROM tequilaso.trimestre where id_trimestre = @id_trimestre
	SELECT @hasta = hasta FROM tequilaso.trimestre where id_trimestre = @id_trimestre

	CREATE TABLE tequilaso.mejoresChoferesPorCuatrimestre(Id_chofer int, Importe money)
	INSERT INTO  tequilaso.mejoresChoferesPorCuatrimestre(Id_chofer,Importe) 
	SELECT TOP(5) rc.id_chofer,sum(rc.importe) FROM tequilaso.rendicion_cuenta rc, tequilaso.chofer c
	WHERE c.id = rc.id_chofer AND (rc.fecha BETWEEN @desde AND @hasta) 
	GROUP BY rc.id_chofer

	SELECT a.id, mc.importe FROM tequilaso.mejoresChoferesPorCuatrimestre mc, tequilaso.chofer c, 
	tequilaso.automovil a , tequilaso.chofer_automovil ca
	WHERE mc.id_chofer = c.id AND a.id = ca.id_automovil AND ca.id_chofer = c.id
	ORDER BY mc.importe DESC 
		
	DROP TABLE tequilaso.mejoresChoferesPorCuatrimestre

END
GO

-- Mejores Choferes
CREATE PROCEDURE TEQUILASO.sp_mejoresChoferes
	@id_trimestre int
AS
	DECLARE @desde DATETIME,
	     	@hasta DATETIME	
BEGIN
	SELECT @desde = desde FROM tequilaso.trimestre where id_trimestre = @id_trimestre
	SELECT @hasta = hasta FROM tequilaso.trimestre where id_trimestre = @id_trimestre

	SELECT TOP(5) rc.id_chofer,sum(rc.importe) FROM tequilaso.rendicion_cuenta rc, tequilaso.chofer c
	WHERE c.id = rc.id_chofer AND (rc.fecha BETWEEN @desde AND @hasta) 
	GROUP BY rc.id_chofer
	ORDER BY 2 DESC
	
END
GO

--Mejores Clientes


CREATE PROCEDURE TEQUILASO.sp_obtenerMejoresClientes
	@id_trimestre int 
AS
DECLARE @desde DATETIME,
     	@hasta DATETIME
BEGIN	
	SELECT @desde = desde FROM tequilaso.trimestre where id_trimestre = @id_trimestre
	SELECT @hasta = hasta FROM tequilaso.trimestre where id_trimestre = @id_trimestre
	select top(5) C.Nombre, C.Apellido, C.DNI, FT.Importe_Trimestral
	from
	(
		select F.Id_Cliente, SUM(F.Importe) Importe_Trimestral 
		from TEQUILASO.FACTURACION_CLIENTE F
		where (F.Fecha_Inicio >= @desde and F.Fecha_Fin <= @hasta)  
		group by F.Id_Cliente
	) FT,
	TEQUILASO.CLIENTE C
	where FT.Id_Cliente = C.Id
	order by Importe_Trimestral desc
END
GO

-- Carga trimestres para comboBox
CREATE PROCEDURE TEQUILASO.sp_cargarTrimestre
AS
BEGIN 
	SELECT * FROM tequilaso.TRIMESTRE
END
GO